package com.eshop.modules.activity.vo;

import java.util.LinkedHashMap;
import java.util.ArrayList;
import com.eshop.modules.product.domain.StoreProductAttrValue;
import java.util.Map;
import com.eshop.modules.product.vo.StoreProductAttrQueryVo;
import java.util.List;
import io.swagger.annotations.ApiModelProperty;
import com.eshop.modules.product.vo.StoreProductReplyQueryVo;
import java.io.Serializable;

public class StoreSeckillVo implements Serializable
{
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("秒杀产品评论信息")
    private StoreProductReplyQueryVo reply;
    @ApiModelProperty("秒杀产品评论数量")
    private Integer replyCount;
    @ApiModelProperty("秒杀产品信息")
    private StoreSeckillQueryVo storeInfo;
    @ApiModelProperty("秒杀产品用户是否收藏")
    private Boolean userCollect;
    @ApiModelProperty("模板名称")
    private String tempName;
    private List<StoreProductAttrQueryVo> productAttr;
    private Map<String, StoreProductAttrValue> productValue;
    
    private static Boolean $default$userCollect() {
        return false;
    }
    
    StoreSeckillVo(final StoreProductReplyQueryVo reply, final Integer replyCount, final StoreSeckillQueryVo storeInfo, final Boolean userCollect, final String tempName, final List<StoreProductAttrQueryVo> productAttr, final Map<String, StoreProductAttrValue> productValue) {
        this.productAttr = new ArrayList<StoreProductAttrQueryVo>();
        this.productValue = new LinkedHashMap<String, StoreProductAttrValue>();
        this.reply = reply;
        this.replyCount = replyCount;
        this.storeInfo = storeInfo;
        this.userCollect = userCollect;
        this.tempName = tempName;
        this.productAttr = productAttr;
        this.productValue = productValue;
    }
    
    public static StoreSeckillVoBuilder builder() {
        return new StoreSeckillVoBuilder();
    }
    
    public StoreProductReplyQueryVo getReply() {
        return this.reply;
    }
    
    public Integer getReplyCount() {
        return this.replyCount;
    }
    
    public StoreSeckillQueryVo getStoreInfo() {
        return this.storeInfo;
    }
    
    public Boolean getUserCollect() {
        return this.userCollect;
    }
    
    public String getTempName() {
        return this.tempName;
    }
    
    public List<StoreProductAttrQueryVo> getProductAttr() {
        return this.productAttr;
    }
    
    public Map<String, StoreProductAttrValue> getProductValue() {
        return this.productValue;
    }
    
    public void setReply(final StoreProductReplyQueryVo reply) {
        this.reply = reply;
    }
    
    public void setReplyCount(final Integer replyCount) {
        this.replyCount = replyCount;
    }
    
    public void setStoreInfo(final StoreSeckillQueryVo storeInfo) {
        this.storeInfo = storeInfo;
    }
    
    public void setUserCollect(final Boolean userCollect) {
        this.userCollect = userCollect;
    }
    
    public void setTempName(final String tempName) {
        this.tempName = tempName;
    }
    
    public void setProductAttr(final List<StoreProductAttrQueryVo> productAttr) {
        this.productAttr = productAttr;
    }
    
    public void setProductValue(final Map<String, StoreProductAttrValue> productValue) {
        this.productValue = productValue;
    }
    
    @Override
    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        }
        if (!(o instanceof StoreSeckillVo)) {
            return false;
        }
        final StoreSeckillVo other = (StoreSeckillVo)o;
        if (!other.canEqual(this)) {
            return false;
        }
        final Object this$replyCount = this.getReplyCount();
        final Object other$replyCount = other.getReplyCount();
        Label_0065: {
            if (this$replyCount == null) {
                if (other$replyCount == null) {
                    break Label_0065;
                }
            }
            else if (this$replyCount.equals(other$replyCount)) {
                break Label_0065;
            }
            return false;
        }
        final Object this$userCollect = this.getUserCollect();
        final Object other$userCollect = other.getUserCollect();
        Label_0102: {
            if (this$userCollect == null) {
                if (other$userCollect == null) {
                    break Label_0102;
                }
            }
            else if (this$userCollect.equals(other$userCollect)) {
                break Label_0102;
            }
            return false;
        }
        final Object this$reply = this.getReply();
        final Object other$reply = other.getReply();
        Label_0139: {
            if (this$reply == null) {
                if (other$reply == null) {
                    break Label_0139;
                }
            }
            else if (this$reply.equals(other$reply)) {
                break Label_0139;
            }
            return false;
        }
        final Object this$storeInfo = this.getStoreInfo();
        final Object other$storeInfo = other.getStoreInfo();
        Label_0176: {
            if (this$storeInfo == null) {
                if (other$storeInfo == null) {
                    break Label_0176;
                }
            }
            else if (this$storeInfo.equals(other$storeInfo)) {
                break Label_0176;
            }
            return false;
        }
        final Object this$tempName = this.getTempName();
        final Object other$tempName = other.getTempName();
        Label_0213: {
            if (this$tempName == null) {
                if (other$tempName == null) {
                    break Label_0213;
                }
            }
            else if (this$tempName.equals(other$tempName)) {
                break Label_0213;
            }
            return false;
        }
        final Object this$productAttr = this.getProductAttr();
        final Object other$productAttr = other.getProductAttr();
        Label_0250: {
            if (this$productAttr == null) {
                if (other$productAttr == null) {
                    break Label_0250;
                }
            }
            else if (this$productAttr.equals(other$productAttr)) {
                break Label_0250;
            }
            return false;
        }
        final Object this$productValue = this.getProductValue();
        final Object other$productValue = other.getProductValue();
        if (this$productValue == null) {
            if (other$productValue == null) {
                return true;
            }
        }
        else if (this$productValue.equals(other$productValue)) {
            return true;
        }
        return false;
    }
    
    protected boolean canEqual(final Object other) {
        return other instanceof StoreSeckillVo;
    }
    
    @Override
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        final Object $replyCount = this.getReplyCount();
        result = result * 59 + (($replyCount == null) ? 43 : $replyCount.hashCode());
        final Object $userCollect = this.getUserCollect();
        result = result * 59 + (($userCollect == null) ? 43 : $userCollect.hashCode());
        final Object $reply = this.getReply();
        result = result * 59 + (($reply == null) ? 43 : $reply.hashCode());
        final Object $storeInfo = this.getStoreInfo();
        result = result * 59 + (($storeInfo == null) ? 43 : $storeInfo.hashCode());
        final Object $tempName = this.getTempName();
        result = result * 59 + (($tempName == null) ? 43 : $tempName.hashCode());
        final Object $productAttr = this.getProductAttr();
        result = result * 59 + (($productAttr == null) ? 43 : $productAttr.hashCode());
        final Object $productValue = this.getProductValue();
        result = result * 59 + (($productValue == null) ? 43 : $productValue.hashCode());
        return result;
    }
    
    @Override
    public String toString() {
        return "StoreSeckillVo(reply=" + this.getReply() + ", replyCount=" + this.getReplyCount() + ", storeInfo=" + this.getStoreInfo() + ", userCollect=" + this.getUserCollect() + ", tempName=" + this.getTempName() + ", productAttr=" + this.getProductAttr() + ", productValue=" + this.getProductValue() + ")";
    }
    
    public static class StoreSeckillVoBuilder
    {
        private StoreProductReplyQueryVo reply;
        private Integer replyCount;
        private StoreSeckillQueryVo storeInfo;
        private boolean userCollect$set;
        private Boolean userCollect$value;
        private String tempName;
        private List<StoreProductAttrQueryVo> productAttr;
        private Map<String, StoreProductAttrValue> productValue;
        
        StoreSeckillVoBuilder() {
        }
        
        public StoreSeckillVoBuilder reply(final StoreProductReplyQueryVo reply) {
            this.reply = reply;
            return this;
        }
        
        public StoreSeckillVoBuilder replyCount(final Integer replyCount) {
            this.replyCount = replyCount;
            return this;
        }
        
        public StoreSeckillVoBuilder storeInfo(final StoreSeckillQueryVo storeInfo) {
            this.storeInfo = storeInfo;
            return this;
        }
        
        public StoreSeckillVoBuilder userCollect(final Boolean userCollect) {
            this.userCollect$value = userCollect;
            this.userCollect$set = true;
            return this;
        }
        
        public StoreSeckillVoBuilder tempName(final String tempName) {
            this.tempName = tempName;
            return this;
        }
        
        public StoreSeckillVoBuilder productAttr(final List<StoreProductAttrQueryVo> productAttr) {
            this.productAttr = productAttr;
            return this;
        }
        
        public StoreSeckillVoBuilder productValue(final Map<String, StoreProductAttrValue> productValue) {
            this.productValue = productValue;
            return this;
        }
        
        public StoreSeckillVo build() {
            Boolean userCollect$value = this.userCollect$value;
            if (!this.userCollect$set) {
                userCollect$value = $default$userCollect();
            }
            return new StoreSeckillVo(this.reply, this.replyCount, this.storeInfo, userCollect$value, this.tempName, this.productAttr, this.productValue);
        }
        
        @Override
        public String toString() {
            return "StoreSeckillVo.StoreSeckillVoBuilder(reply=" + this.reply + ", replyCount=" + this.replyCount + ", storeInfo=" + this.storeInfo + ", userCollect$value=" + this.userCollect$value + ", tempName=" + this.tempName + ", productAttr=" + this.productAttr + ", productValue=" + this.productValue + ")";
        }
    }
}
